package com.ruoyi.master.service;

import java.util.List;
import java.util.Map;

import com.ruoyi.master.domain.TTask;
import com.ruoyi.master.domain.WeightDriftRateVO;
import com.ruoyi.system.api.domain.WxText;

/**
 * 任务Service接口
 * 
 * @author jiandan
 * @date 2024-06-27
 */
public interface ITTaskService 
{
    /**
     * 查询任务
     * 
     * @param taskId 任务主键
     * @return 任务
     */
    public TTask selectTTaskByTaskId(Long taskId);

    /**
     * 查询任务列表
     * 
     * @param tTask 任务
     * @return 任务集合
     */
    public List<TTask> selectTTaskList(TTask tTask);

    /**
     * 查询开放任务列表
     *
     * @param tTask 任务
     * @return 任务集合
     */
    public List<TTask> surfingList(TTask tTask);

    List<TTask> selectPinList(TTask tTask);

    /**
     * 新增任务
     * 
     * @param tTask 任务
     * @return 结果
     */
    public int insertTTask(TTask tTask);

    /**
     * 修改任务
     * 
     * @param tTask 任务
     * @return 结果
     */
    public int updateTTask(TTask tTask);

    /**
     * 批量删除任务
     * 
     * @param taskIds 需要删除的任务主键集合
     * @return 结果
     */
    public int deleteTTaskByTaskIds(Long[] taskIds);

    /**
     * 删除任务信息
     * 
     * @param taskId 任务主键
     * @return 结果
     */
    public int deleteTTaskByTaskId(Long taskId);

    /**
     * 保存来自微信的任务，同时判断是否存在此用户，不存在自动创建用户
     * @param wxText
     * @return 结果
     */
    public String insertTaskFromWechat(WxText wxText);

    /**
     * 保存来自移动端的任务
     * @param tTask
     * @return 结果
     */
    public int insertTaskFromApp(TTask tTask);


    /**
     * 根据任务标签获取任务和对应的任务时长添加记录
     * @param taskId,taskContent,createBy
     * @return
     */
    public TTask selectTTaskByTaskContentAndCreater(Long taskId,String taskContent,String createBy);

    /**
     * 获取用户记录下来的总时长
     * @return 总时长
     */
    public Long totalDurationMin();

    /**
     * 当天时长统计
     * @param tTask
     * @return
     */
    public List<TTask> selectTodayDuration(TTask tTask);

    /**
     * 修改任务权重
     * @param tTask
     * @return
     */
    public int editWeightByTaskId(TTask tTask);

    /**
     * 权重任务偏离度计算
     * @param timeDimension
     * @param taskId
     * @return
     */
    public List<WeightDriftRateVO> weightDriftRate(String timeDimension, Long taskId);

    public Map<String ,String > getDurationMin(String content);

}
